package com.atguigu.gmall.index.aspect;

import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.annotation.Transactional;

import java.lang.annotation.*;

/**
 * @description:
 * @author: xie.zh
 * @create: 2021.03.23   20:31
 * @version: 1.0
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface GmallCache {

    /**
     * 缓存key的前缀
     *
     * @return
     */
    String prefix() default "";

    /**
     * 缓存的过期时间 单位：分钟 默认一天
     *
     * @return
     */
    int timeout() default 1440;

    /**
     * 防止缓存雪崩 给缓存时间添加随机值范围 默认五天 单位分钟
     *
     * @return
     */
    int random() default 50;

    /**
     * 为了缓存击穿 添加分布式锁的前缀 这里可以指定锁前缀
     *
     * @return
     */
    String lock() default "lock:";
}
